class Solution 
{
public:
    void duplicateZeros(vector<int>& arr)
    {
        int cur=0,dest=-1,n=arr.size();
        while(cur<n)
        {
            arr[cur]==0 ? dest+=2:dest++;
            if(dest>=n-1)
                break;
            else
                cur++;
        }
        //处理边界情况
        if(dest==n)
        {
            arr[n-1]=0;
                cur--;
                dest-=2;
        }
       
        while(cur>=0)
        {
            if(arr[cur]==0)
            {
                arr[dest--]=0;
                arr[dest--]=0;
                cur--;
            }
            else
            {
                arr[dest]=arr[cur];
                dest--;
                cur--;
            }
        }
    }
};
